LightGBM model on migration#

Hide code cell source
import copy
import pandas as pd
import pyreadr
import re
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import shap
import lightgbm as lgb
import optuna

from matplotlib.gridspec import GridSpecFromSubplotSpec
from matplotlib.colors import ListedColormap


from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.model_selection import train_test_split

Prepare data and test with initial model#

Hide code cell source
full_data = pd.read_csv("data/tft_input.csv", index_col=0)
full_data
Average age, both sexes_arr Demographic dependency ratio_arr Economic dependency ratio_arr Land area, km²_arr Population density_arr Share of Finnish speakers, %_arr Share of foreign citizens, %_arr Share of persons aged under 15, %_arr Share of persons belonging to other religious groups, %_arr Share of persons belonging to the Evangelical Lutheran Church, %_arr ... Share of persons in outer urban area, %_arr Share of persons in peri-urban area, %_arr Share of persons in rural areas close to urban areas, %_arr Share of persons in rural areas, %_arr Share of persons in rural heartland areas, %_arr Share of persons in sparsely populated rural areas, %_arr Share of persons living in the area of birth, %_arr year net_migration municipality
0 38.6 52.2 130.7 2.466986 54.8 99.4 0.4 18.5 1.3 88.7 ... 0.0 2.2 45.4 96.3 1.5 0.0 48.3 1990 0.005608 Akaa
1 38.8 52.7 152.3 2.466986 54.9 99.4 0.5 18.5 1.7 88.5 ... 0.0 2.3 45.7 96.3 1.5 0.0 48.4 1991 0.002920 Akaa
2 38.8 53.4 171.6 2.466986 55.3 99.4 0.5 18.8 1.7 88.1 ... 0.0 2.4 45.3 96.2 1.4 0.0 48.8 1992 0.005123 Akaa
3 39.1 53.8 192.3 2.466853 55.1 99.3 0.6 18.6 1.8 87.5 ... 0.0 2.5 45.4 96.3 1.5 0.0 48.9 1993 -0.003593 Akaa
4 39.3 55.2 183.2 2.466853 54.7 99.3 0.6 18.9 1.8 87.1 ... 0.0 2.6 45.0 96.3 1.5 0.0 48.9 1994 -0.009602 Akaa
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3021 46.0 75.1 186.0 2.946732 21.2 98.1 1.3 15.9 3.5 72.5 ... 0.0 0.0 0.4 99.2 43.4 10.3 47.4 2019 -0.004157 Äänekoski
3022 46.5 75.9 190.7 2.946737 21.0 98.0 1.4 15.2 3.5 71.6 ... 0.0 0.0 0.4 99.6 43.9 10.3 47.0 2020 -0.010335 Äänekoski
3023 46.9 76.9 174.2 2.946757 20.7 98.0 1.4 14.9 3.5 70.9 ... 0.0 0.0 0.4 99.6 44.1 10.3 46.4 2021 -0.007916 Äänekoski
3024 47.2 77.9 168.1 2.946752 20.5 98.0 1.3 14.6 3.3 70.2 ... 0.0 0.0 0.4 99.1 43.7 10.2 46.2 2022 -0.010210 Äänekoski
3025 47.6 78.0 183.7 2.946747 20.3 97.1 2.2 14.2 3.4 68.6 ... 0.0 0.0 0.4 99.0 43.5 10.1 45.7 2023 -0.009515 Äänekoski

3026 rows × 23 columns

Hide code cell source
full_data["year"] = full_data["year"].astype("category")
df = copy.deepcopy(full_data)
# lightgbm doesn't like special symbols
df = df.rename(columns = lambda x:re.sub('[^A-Za-z0-9_]+', '_', x))
Hide code cell source
# Prepare data for modeling
X = df.drop(columns=["year", "net_migration", "municipality"])
y = df["net_migration"]

# Train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Fit LightGBM model
model = lgb.LGBMRegressor(random_state=42)
# model.fit(X_train, y_train, categorical_feature=['Sex'])
model.fit(X_train, y_train)
[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.000508 seconds.
You can set `force_col_wise=true` to remove the overhead.
[LightGBM] [Info] Total Bins 4269
[LightGBM] [Info] Number of data points in the train set: 2420, number of used features: 20
[LightGBM] [Info] Start training from score -0.001641
LGBMRegressor(random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
Hide code cell source
y_pred = model.predict(X_test)

rmse = np.sqrt(mean_squared_error(y_test, y_pred))
mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"RMSE: {rmse:.5f}")
print(f"MAE: {mae:.5f}")
print(f"R²: {r2:.3f}")
RMSE: 0.00344
MAE: 0.00264
R²: 0.768
Hide code cell source
np.max(y_test) - np.min(y_test)
0.048533836629607405
Hide code cell source
plt.figure(figsize=(6,6))
plt.scatter(y_test, y_pred, alpha=0.3)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')
plt.xlabel('Actual Migration')
plt.ylabel('Predicted Migration')
plt.title('Actual vs. Predicted Net Migration')
plt.show()
../_images/a52661c06d5f3773c9b035480ee376caeea5972641c0fc5c6fdd79340cee8c30.png
Hide code cell source
plt.figure(figsize=(6,6))
plt.scatter(y_test, y_pred, alpha=0.3)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')
plt.yscale('log')
plt.xscale('log')
plt.xlabel('Actual Migration (log)')
plt.ylabel('Predicted Migration (log)')
plt.title('Actual vs. Predicted Net Migration')
plt.show()
../_images/e84db37d7d1447cda76c9d9be8bbfbacfb41903436d8e6ceaefbd80e667b8bd3.png

Optimize with optuna#

Hide code cell source
X_temp, X_test, y_temp, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

X_train, X_valid, y_train, y_valid = train_test_split(
    X_temp, y_temp, test_size=0.25, random_state=42
)
Hide code cell source
categorical_features = []
Hide code cell source
def objective(trial):
    param = {
        # 'objective': 'poisson',  # not stable
        'objective': 'regression', 
        'metric': 'rmse',
        'boosting_type': 'gbdt',
        'verbosity': -1,
        'random_state': 42,
        'learning_rate': trial.suggest_float('learning_rate', 0.2, 0.4),
        'num_leaves': trial.suggest_int('num_leaves', 100, 150),
        'max_depth': trial.suggest_int('max_depth', 10, 20),
        'min_child_samples': trial.suggest_int('min_child_samples', 15, 60),
        'subsample': trial.suggest_float('subsample', 0.5, 1.0),
        'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0),
        'reg_alpha': trial.suggest_float('reg_alpha', 0.0, 1.0),
        'reg_lambda': trial.suggest_float('reg_lambda', 0.0, 1.0),
    }
    
    model = lgb.LGBMRegressor(**param)
    model.fit(
        X_train, y_train,
        eval_set=[(X_valid, y_valid)],
        eval_metric='rmse',
        categorical_feature=categorical_features,
        # early_stopping_rounds=30,
        # verbose=False
    )
    preds = model.predict(X_valid)
    rmse = np.sqrt(mean_squared_error(y_valid, preds))
    return rmse

study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=200)

print("Best RMSE on validation set: ", study.best_value)
print("Best hyperparameters: ", study.best_params)
[I 2025-05-06 17:33:44,058] A new study created in memory with name: no-name-6d11114a-0cd7-4c7b-9454-7f2a1e4396d6
[I 2025-05-06 17:33:44,071] Trial 0 finished with value: 0.004621257812194135 and parameters: {'learning_rate': 0.38035754693840945, 'num_leaves': 138, 'max_depth': 11, 'min_child_samples': 23, 'subsample': 0.5773115945803298, 'colsample_bytree': 0.8096777126305282, 'reg_alpha': 0.6106029705852584, 'reg_lambda': 0.7580303791336379}. Best is trial 0 with value: 0.004621257812194135.
[I 2025-05-06 17:33:44,084] Trial 1 finished with value: 0.0044594433364928835 and parameters: {'learning_rate': 0.3803454357601771, 'num_leaves': 139, 'max_depth': 18, 'min_child_samples': 35, 'subsample': 0.7237069820981517, 'colsample_bytree': 0.7392138423937475, 'reg_alpha': 0.4214636959032272, 'reg_lambda': 0.40027245300902936}. Best is trial 1 with value: 0.0044594433364928835.
[I 2025-05-06 17:33:44,139] Trial 2 finished with value: 0.0036648518437906287 and parameters: {'learning_rate': 0.3686784063208495, 'num_leaves': 123, 'max_depth': 18, 'min_child_samples': 34, 'subsample': 0.5944021168850017, 'colsample_bytree': 0.6610869109292226, 'reg_alpha': 0.006220187796258103, 'reg_lambda': 0.24129957846838113}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,155] Trial 3 finished with value: 0.004221132111925661 and parameters: {'learning_rate': 0.25357273352553206, 'num_leaves': 113, 'max_depth': 12, 'min_child_samples': 17, 'subsample': 0.7368913885191479, 'colsample_bytree': 0.6255515591161466, 'reg_alpha': 0.2640775913932981, 'reg_lambda': 0.3183251034511295}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,166] Trial 4 finished with value: 0.004836440940267931 and parameters: {'learning_rate': 0.3346020789880577, 'num_leaves': 118, 'max_depth': 20, 'min_child_samples': 43, 'subsample': 0.5614224837291802, 'colsample_bytree': 0.7108325636909824, 'reg_alpha': 0.8958404868597816, 'reg_lambda': 0.7909066008115601}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,180] Trial 5 finished with value: 0.004071362977459057 and parameters: {'learning_rate': 0.2854975136240307, 'num_leaves': 138, 'max_depth': 15, 'min_child_samples': 36, 'subsample': 0.9326942230953579, 'colsample_bytree': 0.779896571708172, 'reg_alpha': 0.17765810871684207, 'reg_lambda': 0.868838875820786}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,190] Trial 6 finished with value: 0.004818981361396664 and parameters: {'learning_rate': 0.393932929650654, 'num_leaves': 128, 'max_depth': 17, 'min_child_samples': 20, 'subsample': 0.9495962181972584, 'colsample_bytree': 0.8464132031644382, 'reg_alpha': 0.8289717952639214, 'reg_lambda': 0.3104143553665165}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,204] Trial 7 finished with value: 0.003822552804929179 and parameters: {'learning_rate': 0.35107607890689135, 'num_leaves': 144, 'max_depth': 20, 'min_child_samples': 51, 'subsample': 0.5983161341446062, 'colsample_bytree': 0.6030893151206901, 'reg_alpha': 0.09801014749254411, 'reg_lambda': 0.3699558890442002}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,216] Trial 8 finished with value: 0.004518221687444354 and parameters: {'learning_rate': 0.30804216276535024, 'num_leaves': 127, 'max_depth': 12, 'min_child_samples': 36, 'subsample': 0.6761701230808583, 'colsample_bytree': 0.6423560371725424, 'reg_alpha': 0.5181591608635695, 'reg_lambda': 0.5788332435424147}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,228] Trial 9 finished with value: 0.004652785906880442 and parameters: {'learning_rate': 0.21224261022478175, 'num_leaves': 114, 'max_depth': 15, 'min_child_samples': 16, 'subsample': 0.9695844693937334, 'colsample_bytree': 0.5684456706630928, 'reg_alpha': 0.6642775897411606, 'reg_lambda': 0.2422255908398261}. Best is trial 2 with value: 0.0036648518437906287.
[I 2025-05-06 17:33:44,282] Trial 10 finished with value: 0.0035671672950859453 and parameters: {'learning_rate': 0.3409052074560468, 'num_leaves': 104, 'max_depth': 17, 'min_child_samples': 56, 'subsample': 0.811973367629352, 'colsample_bytree': 0.9895866994854046, 'reg_alpha': 0.022899277230438164, 'reg_lambda': 0.012612854797163564}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,341] Trial 11 finished with value: 0.003700314418571571 and parameters: {'learning_rate': 0.3420508839134359, 'num_leaves': 101, 'max_depth': 17, 'min_child_samples': 60, 'subsample': 0.8458418684135127, 'colsample_bytree': 0.9856671556809601, 'reg_alpha': 0.004044341919664518, 'reg_lambda': 0.03827225987696472}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,368] Trial 12 finished with value: 0.004344843768081657 and parameters: {'learning_rate': 0.30833719190691605, 'num_leaves': 100, 'max_depth': 18, 'min_child_samples': 28, 'subsample': 0.8272209621365566, 'colsample_bytree': 0.9779847066118721, 'reg_alpha': 0.33772714284472605, 'reg_lambda': 0.005678397749849018}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,401] Trial 13 finished with value: 0.003788354315083862 and parameters: {'learning_rate': 0.3501447325216658, 'num_leaves': 106, 'max_depth': 16, 'min_child_samples': 47, 'subsample': 0.5075275222863005, 'colsample_bytree': 0.8966974777926381, 'reg_alpha': 0.07598957031423242, 'reg_lambda': 0.15002438939196783}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,431] Trial 14 finished with value: 0.004201289069006021 and parameters: {'learning_rate': 0.27734830791080356, 'num_leaves': 121, 'max_depth': 14, 'min_child_samples': 60, 'subsample': 0.8057799130928871, 'colsample_bytree': 0.5229190264656272, 'reg_alpha': 0.2116260163636325, 'reg_lambda': 0.14100659640218843}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,499] Trial 15 finished with value: 0.003673962628996589 and parameters: {'learning_rate': 0.36970602588142154, 'num_leaves': 108, 'max_depth': 19, 'min_child_samples': 29, 'subsample': 0.6649410301486054, 'colsample_bytree': 0.6951557827752659, 'reg_alpha': 0.014366107743263124, 'reg_lambda': 0.5036891654109161}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,528] Trial 16 finished with value: 0.004389712991672904 and parameters: {'learning_rate': 0.31974993737291696, 'num_leaves': 131, 'max_depth': 14, 'min_child_samples': 50, 'subsample': 0.8933192427930641, 'colsample_bytree': 0.9008933512867274, 'reg_alpha': 0.3421590086200029, 'reg_lambda': 0.1584546941671705}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,558] Trial 17 finished with value: 0.003960946960476109 and parameters: {'learning_rate': 0.3618064328462659, 'num_leaves': 121, 'max_depth': 18, 'min_child_samples': 42, 'subsample': 0.6379753616479501, 'colsample_bytree': 0.6642805624284706, 'reg_alpha': 0.13849001207801215, 'reg_lambda': 0.6083989101894188}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,586] Trial 18 finished with value: 0.0042854523196693695 and parameters: {'learning_rate': 0.3947449853191729, 'num_leaves': 108, 'max_depth': 16, 'min_child_samples': 54, 'subsample': 0.7800035447398445, 'colsample_bytree': 0.5028677239255499, 'reg_alpha': 0.2781731572352645, 'reg_lambda': 0.08366499468750005}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,616] Trial 19 finished with value: 0.00447869646047557 and parameters: {'learning_rate': 0.3273991322783675, 'num_leaves': 148, 'max_depth': 19, 'min_child_samples': 30, 'subsample': 0.5000244949564803, 'colsample_bytree': 0.8937290414786769, 'reg_alpha': 0.44734762200776806, 'reg_lambda': 0.2516883416891372}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,645] Trial 20 finished with value: 0.0047550232947277 and parameters: {'learning_rate': 0.249749456590307, 'num_leaves': 134, 'max_depth': 17, 'min_child_samples': 55, 'subsample': 0.8930099755901686, 'colsample_bytree': 0.8351994152334674, 'reg_alpha': 0.7383936802786879, 'reg_lambda': 0.4672155649705768}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,725] Trial 21 finished with value: 0.0036544379180601977 and parameters: {'learning_rate': 0.3680738398925623, 'num_leaves': 108, 'max_depth': 19, 'min_child_samples': 30, 'subsample': 0.6734885373213872, 'colsample_bytree': 0.6927852104748435, 'reg_alpha': 0.006245879891372867, 'reg_lambda': 0.49848257661998224}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,792] Trial 22 finished with value: 0.003581305720685455 and parameters: {'learning_rate': 0.35899791826949856, 'num_leaves': 114, 'max_depth': 19, 'min_child_samples': 41, 'subsample': 0.7094899412875338, 'colsample_bytree': 0.7468731535234111, 'reg_alpha': 0.011507644752815365, 'reg_lambda': 0.9846823028316845}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,823] Trial 23 finished with value: 0.0038412229788697687 and parameters: {'learning_rate': 0.3531650262682157, 'num_leaves': 112, 'max_depth': 19, 'min_child_samples': 43, 'subsample': 0.7114726002763639, 'colsample_bytree': 0.7571877146810646, 'reg_alpha': 0.10414321416361773, 'reg_lambda': 0.96638647595254}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,855] Trial 24 finished with value: 0.004140472274434415 and parameters: {'learning_rate': 0.32822897802342843, 'num_leaves': 104, 'max_depth': 20, 'min_child_samples': 40, 'subsample': 0.7673238129480793, 'colsample_bytree': 0.7180859265709904, 'reg_alpha': 0.17162863775948956, 'reg_lambda': 0.6898141296136212}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,890] Trial 25 finished with value: 0.003737173892944104 and parameters: {'learning_rate': 0.3749527664777701, 'num_leaves': 116, 'max_depth': 19, 'min_child_samples': 24, 'subsample': 0.7020074443855192, 'colsample_bytree': 0.7886822641157998, 'reg_alpha': 0.07569267966882548, 'reg_lambda': 0.9050090035682773}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,918] Trial 26 finished with value: 0.004136565555379472 and parameters: {'learning_rate': 0.39919636430520605, 'num_leaves': 110, 'max_depth': 16, 'min_child_samples': 47, 'subsample': 0.6312954986043057, 'colsample_bytree': 0.944885744047173, 'reg_alpha': 0.21571965231553594, 'reg_lambda': 0.9990328539189222}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,957] Trial 27 finished with value: 0.003666246973107291 and parameters: {'learning_rate': 0.2872755774546828, 'num_leaves': 102, 'max_depth': 17, 'min_child_samples': 33, 'subsample': 0.8623588753002838, 'colsample_bytree': 0.6894995053721474, 'reg_alpha': 0.057934355657697785, 'reg_lambda': 0.6076113324302947}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:44,987] Trial 28 finished with value: 0.004366176600871223 and parameters: {'learning_rate': 0.3417067802984949, 'num_leaves': 105, 'max_depth': 20, 'min_child_samples': 39, 'subsample': 0.7832850344942075, 'colsample_bytree': 0.5793997684434591, 'reg_alpha': 0.3467322129267214, 'reg_lambda': 0.7300933895896301}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,017] Trial 29 finished with value: 0.0046154674359781215 and parameters: {'learning_rate': 0.3841409592240464, 'num_leaves': 117, 'max_depth': 19, 'min_child_samples': 24, 'subsample': 0.7481560288257513, 'colsample_bytree': 0.8491819651062505, 'reg_alpha': 0.5887786605953645, 'reg_lambda': 0.8344477193370314}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,049] Trial 30 finished with value: 0.0039587240542545785 and parameters: {'learning_rate': 0.3197761552751106, 'num_leaves': 110, 'max_depth': 10, 'min_child_samples': 26, 'subsample': 0.6832931608358196, 'colsample_bytree': 0.8175624007882749, 'reg_alpha': 0.14621198558632348, 'reg_lambda': 0.5040413718865473}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,125] Trial 31 finished with value: 0.0037279281664700146 and parameters: {'learning_rate': 0.364533028840345, 'num_leaves': 122, 'max_depth': 18, 'min_child_samples': 32, 'subsample': 0.5631557325878, 'colsample_bytree': 0.6683178726722897, 'reg_alpha': 0.0002968641370166957, 'reg_lambda': 0.24326299638148313}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,164] Trial 32 finished with value: 0.0036279466886021978 and parameters: {'learning_rate': 0.38188216686694654, 'num_leaves': 125, 'max_depth': 18, 'min_child_samples': 32, 'subsample': 0.5933646792029982, 'colsample_bytree': 0.7381070909884215, 'reg_alpha': 0.053804782481427386, 'reg_lambda': 0.43867785396322334}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,202] Trial 33 finished with value: 0.00361571620240335 and parameters: {'learning_rate': 0.38260114282925894, 'num_leaves': 107, 'max_depth': 18, 'min_child_samples': 21, 'subsample': 0.6159019350454948, 'colsample_bytree': 0.7326739938939315, 'reg_alpha': 0.06371660007309202, 'reg_lambda': 0.4225303768898458}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,233] Trial 34 finished with value: 0.004207483160748474 and parameters: {'learning_rate': 0.38323777125792163, 'num_leaves': 125, 'max_depth': 18, 'min_child_samples': 19, 'subsample': 0.5358346678379925, 'colsample_bytree': 0.7490030055799424, 'reg_alpha': 0.2596469716169666, 'reg_lambda': 0.40026211562262126}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,264] Trial 35 finished with value: 0.0039405082931695595 and parameters: {'learning_rate': 0.3800326382835254, 'num_leaves': 119, 'max_depth': 17, 'min_child_samples': 57, 'subsample': 0.6052471529032882, 'colsample_bytree': 0.7763386983922212, 'reg_alpha': 0.12929850145559899, 'reg_lambda': 0.6776676046205641}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,301] Trial 36 finished with value: 0.003704706312302949 and parameters: {'learning_rate': 0.3604515812713208, 'num_leaves': 115, 'max_depth': 18, 'min_child_samples': 46, 'subsample': 0.6395818733394711, 'colsample_bytree': 0.7371033500509039, 'reg_alpha': 0.053419240860911626, 'reg_lambda': 0.336582948724677}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,333] Trial 37 finished with value: 0.004163522217224826 and parameters: {'learning_rate': 0.38775345441523545, 'num_leaves': 103, 'max_depth': 15, 'min_child_samples': 20, 'subsample': 0.7240149239335726, 'colsample_bytree': 0.7258212022056979, 'reg_alpha': 0.22367135551175754, 'reg_lambda': 0.43104058681761026}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,371] Trial 38 finished with value: 0.0036229507397374534 and parameters: {'learning_rate': 0.33933978991721014, 'num_leaves': 112, 'max_depth': 16, 'min_child_samples': 15, 'subsample': 0.6120559357090803, 'colsample_bytree': 0.8024209875504329, 'reg_alpha': 0.06314717289627969, 'reg_lambda': 0.5726261846694217}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,404] Trial 39 finished with value: 0.004011256547338456 and parameters: {'learning_rate': 0.3402013169813589, 'num_leaves': 111, 'max_depth': 16, 'min_child_samples': 16, 'subsample': 0.5326566730165025, 'colsample_bytree': 0.9387029167190013, 'reg_alpha': 0.1789207455114678, 'reg_lambda': 0.7916259264914259}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,435] Trial 40 finished with value: 0.004899083779874487 and parameters: {'learning_rate': 0.352864916361165, 'num_leaves': 106, 'max_depth': 14, 'min_child_samples': 15, 'subsample': 0.6205385700181774, 'colsample_bytree': 0.8729032330991064, 'reg_alpha': 0.9702605864004294, 'reg_lambda': 0.9086354647410311}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,475] Trial 41 finished with value: 0.0036785665449205833 and parameters: {'learning_rate': 0.37498311070919055, 'num_leaves': 114, 'max_depth': 17, 'min_child_samples': 21, 'subsample': 0.5667823350154817, 'colsample_bytree': 0.7929179894823796, 'reg_alpha': 0.05571854067873547, 'reg_lambda': 0.5589286726670283}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,508] Trial 42 finished with value: 0.003849390765102481 and parameters: {'learning_rate': 0.3570497641703068, 'num_leaves': 132, 'max_depth': 18, 'min_child_samples': 26, 'subsample': 0.5836476385261967, 'colsample_bytree': 0.7621392552599563, 'reg_alpha': 0.113647470039838, 'reg_lambda': 0.2989875907292584}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,549] Trial 43 finished with value: 0.00365747503477274 and parameters: {'learning_rate': 0.33332431682802477, 'num_leaves': 119, 'max_depth': 16, 'min_child_samples': 37, 'subsample': 0.5991945252255012, 'colsample_bytree': 0.8110677665918622, 'reg_alpha': 0.05149099930015308, 'reg_lambda': 0.6605613862330966}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,583] Trial 44 finished with value: 0.0037982604381352793 and parameters: {'learning_rate': 0.3891833864902585, 'num_leaves': 139, 'max_depth': 15, 'min_child_samples': 19, 'subsample': 0.6532898845289061, 'colsample_bytree': 0.7130674754688264, 'reg_alpha': 0.10635238487558041, 'reg_lambda': 0.3899361166804099}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,615] Trial 45 finished with value: 0.004291100992696495 and parameters: {'learning_rate': 0.3452310588806767, 'num_leaves': 126, 'max_depth': 18, 'min_child_samples': 22, 'subsample': 0.5440254544470559, 'colsample_bytree': 0.6351185222991806, 'reg_alpha': 0.2982646508140027, 'reg_lambda': 0.19427379874240028}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,662] Trial 46 finished with value: 0.0036375081793532946 and parameters: {'learning_rate': 0.29869020575907307, 'num_leaves': 100, 'max_depth': 17, 'min_child_samples': 35, 'subsample': 0.6927326183172707, 'colsample_bytree': 0.9389348982710519, 'reg_alpha': 0.03696167031927418, 'reg_lambda': 0.08182655660638638}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,696] Trial 47 finished with value: 0.004017255042357727 and parameters: {'learning_rate': 0.374715156754891, 'num_leaves': 109, 'max_depth': 20, 'min_child_samples': 17, 'subsample': 0.6119940986119475, 'colsample_bytree': 0.7748694041237691, 'reg_alpha': 0.15273281223594332, 'reg_lambda': 0.35015279449505643}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,732] Trial 48 finished with value: 0.00404441537951594 and parameters: {'learning_rate': 0.21814099303167073, 'num_leaves': 113, 'max_depth': 13, 'min_child_samples': 18, 'subsample': 0.7998324796043721, 'colsample_bytree': 0.7352181660070002, 'reg_alpha': 0.19339258112435948, 'reg_lambda': 0.5452891115514705}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,763] Trial 49 finished with value: 0.004442518860443055 and parameters: {'learning_rate': 0.36606428853289613, 'num_leaves': 107, 'max_depth': 17, 'min_child_samples': 45, 'subsample': 0.6549963272368661, 'colsample_bytree': 0.8334047790772796, 'reg_alpha': 0.4228630117548823, 'reg_lambda': 0.43283674833009445}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,798] Trial 50 finished with value: 0.0038278785603712865 and parameters: {'learning_rate': 0.3211983739622231, 'num_leaves': 103, 'max_depth': 16, 'min_child_samples': 51, 'subsample': 0.5847696013594018, 'colsample_bytree': 0.9682852490668451, 'reg_alpha': 0.09555313369770815, 'reg_lambda': 0.2931379149010794}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,865] Trial 51 finished with value: 0.003595060383451281 and parameters: {'learning_rate': 0.27636805413299304, 'num_leaves': 100, 'max_depth': 17, 'min_child_samples': 34, 'subsample': 0.7042363595475666, 'colsample_bytree': 0.9956873387917643, 'reg_alpha': 0.02066295060362445, 'reg_lambda': 0.09394797767206894}. Best is trial 10 with value: 0.0035671672950859453.
[I 2025-05-06 17:33:45,917] Trial 52 finished with value: 0.003562063420464587 and parameters: {'learning_rate': 0.2658282001831592, 'num_leaves': 105, 'max_depth': 18, 'min_child_samples': 32, 'subsample': 0.7455708144845214, 'colsample_bytree': 0.9630426079228893, 'reg_alpha': 0.031011266040524565, 'reg_lambda': 0.029367550755254566}. Best is trial 52 with value: 0.003562063420464587.
[I 2025-05-06 17:33:46,008] Trial 53 finished with value: 0.0036559830583214573 and parameters: {'learning_rate': 0.25946382709537663, 'num_leaves': 105, 'max_depth': 19, 'min_child_samples': 27, 'subsample': 0.7402697215314024, 'colsample_bytree': 0.9697632234326485, 'reg_alpha': 0.003188813821887848, 'reg_lambda': 0.009757826528881911}. Best is trial 52 with value: 0.003562063420464587.
[I 2025-05-06 17:33:46,045] Trial 54 finished with value: 0.0037707536697530733 and parameters: {'learning_rate': 0.27181724113229105, 'num_leaves': 101, 'max_depth': 16, 'min_child_samples': 41, 'subsample': 0.7176415991216495, 'colsample_bytree': 0.9542550621571235, 'reg_alpha': 0.08413160324019098, 'reg_lambda': 0.0785666845908399}. Best is trial 52 with value: 0.003562063420464587.
[I 2025-05-06 17:33:46,104] Trial 55 finished with value: 0.003574852471871246 and parameters: {'learning_rate': 0.2313112765731024, 'num_leaves': 104, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.754378318016717, 'colsample_bytree': 0.9871888256564262, 'reg_alpha': 0.02877575021331695, 'reg_lambda': 0.04767409086492083}. Best is trial 52 with value: 0.003562063420464587.
[I 2025-05-06 17:33:46,159] Trial 56 finished with value: 0.003546273789900404 and parameters: {'learning_rate': 0.23646246322689415, 'num_leaves': 103, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.7618659380462485, 'colsample_bytree': 0.9907529158037889, 'reg_alpha': 0.035147733057663895, 'reg_lambda': 0.11660672877742384}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,215] Trial 57 finished with value: 0.003583248173243833 and parameters: {'learning_rate': 0.22384923115037078, 'num_leaves': 100, 'max_depth': 17, 'min_child_samples': 38, 'subsample': 0.7598695997380909, 'colsample_bytree': 0.9997282142177455, 'reg_alpha': 0.03171173510285608, 'reg_lambda': 0.05949480286440759}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,247] Trial 58 finished with value: 0.004739979980573785 and parameters: {'learning_rate': 0.2289799615780136, 'num_leaves': 104, 'max_depth': 17, 'min_child_samples': 38, 'subsample': 0.8226950474975323, 'colsample_bytree': 0.9146657597141316, 'reg_alpha': 0.7415039398705431, 'reg_lambda': 0.047409488958406854}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,281] Trial 59 finished with value: 0.004014442397000201 and parameters: {'learning_rate': 0.23676038599163177, 'num_leaves': 102, 'max_depth': 15, 'min_child_samples': 44, 'subsample': 0.7635287004921322, 'colsample_bytree': 0.9985687616013055, 'reg_alpha': 0.13952811318476996, 'reg_lambda': 0.12931849434283926}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,316] Trial 60 finished with value: 0.004243790463066217 and parameters: {'learning_rate': 0.23427681203397852, 'num_leaves': 105, 'max_depth': 19, 'min_child_samples': 48, 'subsample': 0.8009675293124785, 'colsample_bytree': 0.9803885800991031, 'reg_alpha': 0.24993166416250573, 'reg_lambda': 0.1970627332714104}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,388] Trial 61 finished with value: 0.0035506813695402165 and parameters: {'learning_rate': 0.20832178482175978, 'num_leaves': 102, 'max_depth': 17, 'min_child_samples': 36, 'subsample': 0.7348916987632085, 'colsample_bytree': 0.9986476076885111, 'reg_alpha': 0.017501855011217857, 'reg_lambda': 0.10921316426187136}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,454] Trial 62 finished with value: 0.003551981033376885 and parameters: {'learning_rate': 0.20131390830462476, 'num_leaves': 103, 'max_depth': 17, 'min_child_samples': 37, 'subsample': 0.7608405995500394, 'colsample_bytree': 0.958010777932716, 'reg_alpha': 0.02812265089471, 'reg_lambda': 0.05014722654481158}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,494] Trial 63 finished with value: 0.0037733784733552816 and parameters: {'learning_rate': 0.20115138041660582, 'num_leaves': 103, 'max_depth': 18, 'min_child_samples': 36, 'subsample': 0.7278948799122447, 'colsample_bytree': 0.920505605937951, 'reg_alpha': 0.09186973637083556, 'reg_lambda': 0.11878586951091155}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,562] Trial 64 finished with value: 0.003590257752537454 and parameters: {'learning_rate': 0.20014979174502145, 'num_leaves': 107, 'max_depth': 17, 'min_child_samples': 40, 'subsample': 0.7826462385431695, 'colsample_bytree': 0.9582480480409149, 'reg_alpha': 0.02395162939373841, 'reg_lambda': 0.0017981088301495807}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,595] Trial 65 finished with value: 0.0045399816757300815 and parameters: {'learning_rate': 0.21285794718028686, 'num_leaves': 109, 'max_depth': 18, 'min_child_samples': 42, 'subsample': 0.8464016294987379, 'colsample_bytree': 0.92806005121635, 'reg_alpha': 0.5008799251013154, 'reg_lambda': 0.18129850433429517}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,631] Trial 66 finished with value: 0.0038606098110780256 and parameters: {'learning_rate': 0.24565824337230693, 'num_leaves': 102, 'max_depth': 19, 'min_child_samples': 31, 'subsample': 0.741906672111516, 'colsample_bytree': 0.9824026129232495, 'reg_alpha': 0.11105088775401431, 'reg_lambda': 0.03467955320155806}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,666] Trial 67 finished with value: 0.00397588682817879 and parameters: {'learning_rate': 0.21056075198311924, 'num_leaves': 105, 'max_depth': 18, 'min_child_samples': 34, 'subsample': 0.7736469051940045, 'colsample_bytree': 0.9579743252234597, 'reg_alpha': 0.16199989168987278, 'reg_lambda': 0.10511982827238314}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,715] Trial 68 finished with value: 0.003579717478934598 and parameters: {'learning_rate': 0.24132799917460465, 'num_leaves': 102, 'max_depth': 17, 'min_child_samples': 37, 'subsample': 0.8207876811278009, 'colsample_bytree': 0.8884122456269399, 'reg_alpha': 0.039717031304108516, 'reg_lambda': 0.16549131490966595}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,754] Trial 69 finished with value: 0.0037522438597432286 and parameters: {'learning_rate': 0.2591249736309291, 'num_leaves': 102, 'max_depth': 16, 'min_child_samples': 36, 'subsample': 0.8290090541077458, 'colsample_bytree': 0.9064970012338812, 'reg_alpha': 0.08418085644758316, 'reg_lambda': 0.16434743365473048}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,807] Trial 70 finished with value: 0.0035753385082813007 and parameters: {'learning_rate': 0.24123849315133478, 'num_leaves': 104, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.8800019965293646, 'colsample_bytree': 0.8649892367644024, 'reg_alpha': 0.032848014200825344, 'reg_lambda': 0.02877084211710587}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,858] Trial 71 finished with value: 0.003556713014661714 and parameters: {'learning_rate': 0.2476905246816547, 'num_leaves': 104, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.9039125121236107, 'colsample_bytree': 0.8937798585594846, 'reg_alpha': 0.03602485942482944, 'reg_lambda': 0.03223341155801826}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,934] Trial 72 finished with value: 0.0036058811242319277 and parameters: {'learning_rate': 0.2527536312756722, 'num_leaves': 142, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.8904455670738279, 'colsample_bytree': 0.8631036508772262, 'reg_alpha': 0.0005360101562439934, 'reg_lambda': 0.02966699106708362}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:46,970] Trial 73 finished with value: 0.003935480941837416 and parameters: {'learning_rate': 0.2294629778183227, 'num_leaves': 104, 'max_depth': 17, 'min_child_samples': 43, 'subsample': 0.9407410970052787, 'colsample_bytree': 0.968636270758705, 'reg_alpha': 0.12553995952123959, 'reg_lambda': 0.07284096420325174}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,003] Trial 74 finished with value: 0.004572574855340099 and parameters: {'learning_rate': 0.2065942445470272, 'num_leaves': 106, 'max_depth': 16, 'min_child_samples': 33, 'subsample': 0.9691705590838063, 'colsample_bytree': 0.9461761171805484, 'reg_alpha': 0.5690703287780228, 'reg_lambda': 0.02412880356193544}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,057] Trial 75 finished with value: 0.0036190641908052535 and parameters: {'learning_rate': 0.2229028452243522, 'num_leaves': 110, 'max_depth': 17, 'min_child_samples': 40, 'subsample': 0.9156385152894612, 'colsample_bytree': 0.928383520671403, 'reg_alpha': 0.034348493099542944, 'reg_lambda': 0.11844990915551745}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,096] Trial 76 finished with value: 0.0037307874649068424 and parameters: {'learning_rate': 0.262632025921155, 'num_leaves': 107, 'max_depth': 16, 'min_child_samples': 29, 'subsample': 0.9203339361986879, 'colsample_bytree': 0.9867780680074146, 'reg_alpha': 0.08202682534442818, 'reg_lambda': 0.05360070189426562}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,137] Trial 77 finished with value: 0.003718360725435041 and parameters: {'learning_rate': 0.24730255750518304, 'num_leaves': 104, 'max_depth': 18, 'min_child_samples': 35, 'subsample': 0.8784096391426239, 'colsample_bytree': 0.9659120013808954, 'reg_alpha': 0.07532827881239682, 'reg_lambda': 0.13979072818725866}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,195] Trial 78 finished with value: 0.003548889729737153 and parameters: {'learning_rate': 0.23817122690688436, 'num_leaves': 101, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.9952104086678605, 'colsample_bytree': 0.9867509489597154, 'reg_alpha': 0.030144926070064533, 'reg_lambda': 0.05535134381732516}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,230] Trial 79 finished with value: 0.00392121697137504 and parameters: {'learning_rate': 0.21770946035578267, 'num_leaves': 101, 'max_depth': 15, 'min_child_samples': 53, 'subsample': 0.979358621784501, 'colsample_bytree': 0.9506954896479823, 'reg_alpha': 0.12416082229224629, 'reg_lambda': 0.09963954102185021}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,263] Trial 80 finished with value: 0.004736685798799171 and parameters: {'learning_rate': 0.2311368681101269, 'num_leaves': 109, 'max_depth': 18, 'min_child_samples': 57, 'subsample': 0.7546500498825692, 'colsample_bytree': 0.9823281662054993, 'reg_alpha': 0.668857302864307, 'reg_lambda': 0.003984870620552}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,317] Trial 81 finished with value: 0.0035586647151520856 and parameters: {'learning_rate': 0.24063595366030702, 'num_leaves': 103, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.791487309640746, 'colsample_bytree': 0.8832101067676813, 'reg_alpha': 0.033715880550759206, 'reg_lambda': 0.05386005038785556}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,389] Trial 82 finished with value: 0.003595036336009231 and parameters: {'learning_rate': 0.267397239156368, 'num_leaves': 101, 'max_depth': 16, 'min_child_samples': 41, 'subsample': 0.7903662676126277, 'colsample_bytree': 0.9893616913526768, 'reg_alpha': 0.0008070903375320369, 'reg_lambda': 0.06049108430552545}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,434] Trial 83 finished with value: 0.0036777235114821374 and parameters: {'learning_rate': 0.23918915568988008, 'num_leaves': 103, 'max_depth': 17, 'min_child_samples': 36, 'subsample': 0.7298656601960133, 'colsample_bytree': 0.9346686888993408, 'reg_alpha': 0.061292323779728264, 'reg_lambda': 0.2104576583528043}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,491] Trial 84 finished with value: 0.0036113156438326165 and parameters: {'learning_rate': 0.22554761289140873, 'num_leaves': 106, 'max_depth': 17, 'min_child_samples': 38, 'subsample': 0.7504139621788138, 'colsample_bytree': 0.9740953559542479, 'reg_alpha': 0.03311596102967428, 'reg_lambda': 0.050046759694749504}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,533] Trial 85 finished with value: 0.003714607526352088 and parameters: {'learning_rate': 0.2525835505083091, 'num_leaves': 100, 'max_depth': 18, 'min_child_samples': 42, 'subsample': 0.99782401916549, 'colsample_bytree': 0.9118547040333158, 'reg_alpha': 0.06232160336635818, 'reg_lambda': 0.09276959888112739}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,567] Trial 86 finished with value: 0.004058453924600122 and parameters: {'learning_rate': 0.21816420764327096, 'num_leaves': 108, 'max_depth': 16, 'min_child_samples': 31, 'subsample': 0.8078742329710495, 'colsample_bytree': 0.8804827335512275, 'reg_alpha': 0.19035578592681182, 'reg_lambda': 0.15024852288668544}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,605] Trial 87 finished with value: 0.003853821641977978 and parameters: {'learning_rate': 0.28812700733119523, 'num_leaves': 106, 'max_depth': 18, 'min_child_samples': 34, 'subsample': 0.7862798626558037, 'colsample_bytree': 0.959690533024898, 'reg_alpha': 0.10735005624223046, 'reg_lambda': 0.07220294399629432}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,640] Trial 88 finished with value: 0.004392055016203612 and parameters: {'learning_rate': 0.206815665509618, 'num_leaves': 103, 'max_depth': 17, 'min_child_samples': 39, 'subsample': 0.8436442698895538, 'colsample_bytree': 0.946887070928079, 'reg_alpha': 0.3665371385602182, 'reg_lambda': 0.21541738782027917}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,675] Trial 89 finished with value: 0.0039962222448960355 and parameters: {'learning_rate': 0.2447126789193346, 'num_leaves': 101, 'max_depth': 16, 'min_child_samples': 37, 'subsample': 0.7668338778082866, 'colsample_bytree': 0.9893656390128593, 'reg_alpha': 0.14704934229014846, 'reg_lambda': 0.1116929262747529}. Best is trial 56 with value: 0.003546273789900404.
[I 2025-05-06 17:33:47,736] Trial 90 finished with value: 0.003538943495836512 and parameters: {'learning_rate': 0.23567046951718515, 'num_leaves': 150, 'max_depth': 18, 'min_child_samples': 48, 'subsample': 0.7340707905615973, 'colsample_bytree': 0.9771168434988977, 'reg_alpha': 0.027273543786217824, 'reg_lambda': 0.023104796193984187}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:47,796] Trial 91 finished with value: 0.0036220657178888107 and parameters: {'learning_rate': 0.2330381765305705, 'num_leaves': 137, 'max_depth': 18, 'min_child_samples': 49, 'subsample': 0.7404631809353914, 'colsample_bytree': 0.9751125439560273, 'reg_alpha': 0.027539265406181245, 'reg_lambda': 0.00013483419850780776}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:47,842] Trial 92 finished with value: 0.003704645095943702 and parameters: {'learning_rate': 0.255761971862607, 'num_leaves': 129, 'max_depth': 17, 'min_child_samples': 59, 'subsample': 0.6907609271051072, 'colsample_bytree': 0.9970773671475198, 'reg_alpha': 0.050847471780322596, 'reg_lambda': 0.029728026988046483}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:47,910] Trial 93 finished with value: 0.0035748016126050837 and parameters: {'learning_rate': 0.22081853122377845, 'num_leaves': 143, 'max_depth': 17, 'min_child_samples': 45, 'subsample': 0.773475470124721, 'colsample_bytree': 0.9753697903982356, 'reg_alpha': 0.015786106041271113, 'reg_lambda': 0.04855677611163964}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:47,950] Trial 94 finished with value: 0.003815060490448377 and parameters: {'learning_rate': 0.2219292380012452, 'num_leaves': 150, 'max_depth': 11, 'min_child_samples': 45, 'subsample': 0.7703194707168589, 'colsample_bytree': 0.9314920459757402, 'reg_alpha': 0.08363512560929635, 'reg_lambda': 0.07675749348946512}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,018] Trial 95 finished with value: 0.003591531203978722 and parameters: {'learning_rate': 0.2136963720329219, 'num_leaves': 148, 'max_depth': 18, 'min_child_samples': 54, 'subsample': 0.7135788963680584, 'colsample_bytree': 0.9644661944912771, 'reg_alpha': 0.0024692620301359144, 'reg_lambda': 0.13652183927329198}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,057] Trial 96 finished with value: 0.0037248071531302794 and parameters: {'learning_rate': 0.30943638874808366, 'num_leaves': 144, 'max_depth': 17, 'min_child_samples': 51, 'subsample': 0.8130000652812005, 'colsample_bytree': 0.9441231792679875, 'reg_alpha': 0.0686599458838856, 'reg_lambda': 0.0186799821629064}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,124] Trial 97 finished with value: 0.003553514910563643 and parameters: {'learning_rate': 0.2066824914023452, 'num_leaves': 146, 'max_depth': 16, 'min_child_samples': 44, 'subsample': 0.7749572680410172, 'colsample_bytree': 0.9737363517090231, 'reg_alpha': 0.020757636837444422, 'reg_lambda': 0.09236681379252039}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,162] Trial 98 finished with value: 0.0038381063865531276 and parameters: {'learning_rate': 0.20924037333284515, 'num_leaves': 146, 'max_depth': 16, 'min_child_samples': 43, 'subsample': 0.7952630900286133, 'colsample_bytree': 0.9214514939068619, 'reg_alpha': 0.09953172580501883, 'reg_lambda': 0.09100330700370751}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,212] Trial 99 finished with value: 0.0036019436963842136 and parameters: {'learning_rate': 0.20455536421848466, 'num_leaves': 150, 'max_depth': 16, 'min_child_samples': 47, 'subsample': 0.7343881242429389, 'colsample_bytree': 0.9023916151759349, 'reg_alpha': 0.04323602351305261, 'reg_lambda': 0.11644996720170855}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,247] Trial 100 finished with value: 0.003894635477117713 and parameters: {'learning_rate': 0.29280841913006883, 'num_leaves': 148, 'max_depth': 15, 'min_child_samples': 44, 'subsample': 0.7216850762608422, 'colsample_bytree': 0.9565686982769939, 'reg_alpha': 0.12809777699988262, 'reg_lambda': 0.2695301961385225}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,316] Trial 101 finished with value: 0.003584838372003688 and parameters: {'learning_rate': 0.2175966043778031, 'num_leaves': 143, 'max_depth': 17, 'min_child_samples': 46, 'subsample': 0.782048561798684, 'colsample_bytree': 0.9748403210414955, 'reg_alpha': 0.014205538173176754, 'reg_lambda': 0.06306768919721722}. Best is trial 90 with value: 0.003538943495836512.
[I 2025-05-06 17:33:48,388] Trial 102 finished with value: 0.0035137842343261 and parameters: {'learning_rate': 0.23757535229582552, 'num_leaves': 146, 'max_depth': 17, 'min_child_samples': 40, 'subsample': 0.7496600351926027, 'colsample_bytree': 0.9778660054245937, 'reg_alpha': 0.015575510151199061, 'reg_lambda': 0.034145501467004596}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,435] Trial 103 finished with value: 0.0036136118380622854 and parameters: {'learning_rate': 0.23536357133410943, 'num_leaves': 146, 'max_depth': 18, 'min_child_samples': 41, 'subsample': 0.747211197515026, 'colsample_bytree': 0.998643576615519, 'reg_alpha': 0.052112640466790164, 'reg_lambda': 0.019653239627765835}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,476] Trial 104 finished with value: 0.0037518704450112813 and parameters: {'learning_rate': 0.24821045453146362, 'num_leaves': 141, 'max_depth': 17, 'min_child_samples': 42, 'subsample': 0.7615436489622229, 'colsample_bytree': 0.9875531378892501, 'reg_alpha': 0.07313725181355396, 'reg_lambda': 0.034341905721198426}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,507] Trial 105 finished with value: 0.004853389804213232 and parameters: {'learning_rate': 0.24314530939521464, 'num_leaves': 146, 'max_depth': 17, 'min_child_samples': 35, 'subsample': 0.8425341893833063, 'colsample_bytree': 0.9633563937056377, 'reg_alpha': 0.8753510163814633, 'reg_lambda': 0.08663507618676447}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,576] Trial 106 finished with value: 0.0036305299461464654 and parameters: {'learning_rate': 0.2254311686432711, 'num_leaves': 149, 'max_depth': 17, 'min_child_samples': 40, 'subsample': 0.7035929538494731, 'colsample_bytree': 0.9501821861040178, 'reg_alpha': 0.020123760403207597, 'reg_lambda': 0.0656578742107775}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,622] Trial 107 finished with value: 0.0036061601904675087 and parameters: {'learning_rate': 0.26510853137086743, 'num_leaves': 147, 'max_depth': 18, 'min_child_samples': 37, 'subsample': 0.8566111553967792, 'colsample_bytree': 0.939642822063811, 'reg_alpha': 0.04519448689621948, 'reg_lambda': 0.17697695811872205}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,662] Trial 108 finished with value: 0.0037872860675652194 and parameters: {'learning_rate': 0.238726570933311, 'num_leaves': 105, 'max_depth': 16, 'min_child_samples': 40, 'subsample': 0.6764925291941335, 'colsample_bytree': 0.9788322274872533, 'reg_alpha': 0.09337949393223036, 'reg_lambda': 0.0003936971723306759}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,735] Trial 109 finished with value: 0.003584114715773715 and parameters: {'learning_rate': 0.2815935067099468, 'num_leaves': 137, 'max_depth': 18, 'min_child_samples': 33, 'subsample': 0.9134047512050636, 'colsample_bytree': 0.8425897275138883, 'reg_alpha': 0.01731760585418781, 'reg_lambda': 0.10477000353618898}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,781] Trial 110 finished with value: 0.003761556132425814 and parameters: {'learning_rate': 0.2041833855956335, 'num_leaves': 134, 'max_depth': 17, 'min_child_samples': 38, 'subsample': 0.7314429674772046, 'colsample_bytree': 0.9216767824517003, 'reg_alpha': 0.06836424030155457, 'reg_lambda': 0.04371022406265371}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,851] Trial 111 finished with value: 0.0035837615613084632 and parameters: {'learning_rate': 0.21405984052505814, 'num_leaves': 144, 'max_depth': 17, 'min_child_samples': 44, 'subsample': 0.7752136477636279, 'colsample_bytree': 0.9743200235324503, 'reg_alpha': 0.013006182609795958, 'reg_lambda': 0.04631423369684661}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,900] Trial 112 finished with value: 0.0036121517001237334 and parameters: {'learning_rate': 0.22155702578524097, 'num_leaves': 145, 'max_depth': 17, 'min_child_samples': 49, 'subsample': 0.7568553771663732, 'colsample_bytree': 0.9903781582736888, 'reg_alpha': 0.04512204963617162, 'reg_lambda': 0.12677278025462252}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:48,963] Trial 113 finished with value: 0.0035189303106094474 and parameters: {'learning_rate': 0.2379349383361195, 'num_leaves': 102, 'max_depth': 16, 'min_child_samples': 41, 'subsample': 0.7945445719387761, 'colsample_bytree': 0.9682267587297748, 'reg_alpha': 0.02511079891424487, 'reg_lambda': 0.06577223541918094}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,002] Trial 114 finished with value: 0.0038252394872614103 and parameters: {'learning_rate': 0.22677582175646896, 'num_leaves': 102, 'max_depth': 15, 'min_child_samples': 41, 'subsample': 0.9588041798104313, 'colsample_bytree': 0.9520082072890523, 'reg_alpha': 0.1042244334179762, 'reg_lambda': 0.019656436588994762}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,057] Trial 115 finished with value: 0.0035582983707986094 and parameters: {'learning_rate': 0.2489228758303367, 'num_leaves': 103, 'max_depth': 16, 'min_child_samples': 36, 'subsample': 0.8000498219079347, 'colsample_bytree': 0.96326561402148, 'reg_alpha': 0.03455872850855547, 'reg_lambda': 0.07686946195216478}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,105] Trial 116 finished with value: 0.0036043843362850827 and parameters: {'learning_rate': 0.24980843646321532, 'num_leaves': 100, 'max_depth': 16, 'min_child_samples': 39, 'subsample': 0.7904063345677068, 'colsample_bytree': 0.965992925494275, 'reg_alpha': 0.043814436172052676, 'reg_lambda': 0.07692167698369591}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,147] Trial 117 finished with value: 0.003773072413807649 and parameters: {'learning_rate': 0.2364061564451594, 'num_leaves': 103, 'max_depth': 16, 'min_child_samples': 37, 'subsample': 0.8300169987327889, 'colsample_bytree': 0.9992568874228713, 'reg_alpha': 0.07469171589186577, 'reg_lambda': 0.14937700035742316}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,221] Trial 118 finished with value: 0.0036255725328221485 and parameters: {'learning_rate': 0.2575843523150557, 'num_leaves': 101, 'max_depth': 15, 'min_child_samples': 38, 'subsample': 0.8135601102156499, 'colsample_bytree': 0.9385447747621689, 'reg_alpha': 0.0020935006238836096, 'reg_lambda': 0.10142997640343213}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,261] Trial 119 finished with value: 0.0038628535046247563 and parameters: {'learning_rate': 0.25283416340360854, 'num_leaves': 123, 'max_depth': 16, 'min_child_samples': 36, 'subsample': 0.7466089523138812, 'colsample_bytree': 0.9815841581952515, 'reg_alpha': 0.11709881435819466, 'reg_lambda': 0.06232740789489873}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,320] Trial 120 finished with value: 0.00352491654608006 and parameters: {'learning_rate': 0.2415355310820344, 'num_leaves': 103, 'max_depth': 16, 'min_child_samples': 32, 'subsample': 0.8059567180940889, 'colsample_bytree': 0.9613703781574233, 'reg_alpha': 0.026350687826883663, 'reg_lambda': 0.13687279506789268}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,378] Trial 121 finished with value: 0.003548036665249619 and parameters: {'learning_rate': 0.24075623023565212, 'num_leaves': 103, 'max_depth': 16, 'min_child_samples': 31, 'subsample': 0.7994987802218972, 'colsample_bytree': 0.9558940673904895, 'reg_alpha': 0.029299796622783453, 'reg_lambda': 0.129971883032057}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,424] Trial 122 finished with value: 0.0036586184518901618 and parameters: {'learning_rate': 0.24228729375830074, 'num_leaves': 102, 'max_depth': 16, 'min_child_samples': 29, 'subsample': 0.8021164146359451, 'colsample_bytree': 0.9566146246201165, 'reg_alpha': 0.055418208894434065, 'reg_lambda': 0.143562561242811}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,480] Trial 123 finished with value: 0.0035780108640140356 and parameters: {'learning_rate': 0.22966211708685924, 'num_leaves': 103, 'max_depth': 14, 'min_child_samples': 35, 'subsample': 0.7951502218315177, 'colsample_bytree': 0.9697984306521189, 'reg_alpha': 0.03401745663047872, 'reg_lambda': 0.12568357701742222}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,553] Trial 124 finished with value: 0.0035913221887471547 and parameters: {'learning_rate': 0.23856239583226949, 'num_leaves': 104, 'max_depth': 16, 'min_child_samples': 40, 'subsample': 0.8338303683772836, 'colsample_bytree': 0.8209662349328521, 'reg_alpha': 0.0001275968198728404, 'reg_lambda': 0.08886329475935756}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,594] Trial 125 finished with value: 0.0037481513867942545 and parameters: {'learning_rate': 0.2485938941833318, 'num_leaves': 101, 'max_depth': 15, 'min_child_samples': 31, 'subsample': 0.8145982431825539, 'colsample_bytree': 0.8956898574256303, 'reg_alpha': 0.08105465823183011, 'reg_lambda': 0.18216044022342362}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,662] Trial 126 finished with value: 0.0035948442719934584 and parameters: {'learning_rate': 0.24496808562760083, 'num_leaves': 105, 'max_depth': 16, 'min_child_samples': 42, 'subsample': 0.7837455945071582, 'colsample_bytree': 0.9857247053296907, 'reg_alpha': 0.0225094126758373, 'reg_lambda': 0.11250916855345387}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,707] Trial 127 finished with value: 0.003721698771716723 and parameters: {'learning_rate': 0.23122476824527158, 'num_leaves': 107, 'max_depth': 16, 'min_child_samples': 33, 'subsample': 0.7635702558496679, 'colsample_bytree': 0.9331739036435452, 'reg_alpha': 0.057427075335186886, 'reg_lambda': 0.1684490239567914}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,746] Trial 128 finished with value: 0.003772201126692066 and parameters: {'learning_rate': 0.23502323784765322, 'num_leaves': 102, 'max_depth': 16, 'min_child_samples': 39, 'subsample': 0.8634466562778786, 'colsample_bytree': 0.9506318541753969, 'reg_alpha': 0.08822101987757178, 'reg_lambda': 0.07513454909414241}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,811] Trial 129 finished with value: 0.0035445720017158295 and parameters: {'learning_rate': 0.200735733699115, 'num_leaves': 100, 'max_depth': 15, 'min_child_samples': 34, 'subsample': 0.8032068940154384, 'colsample_bytree': 0.9668134576810342, 'reg_alpha': 0.029691828714457583, 'reg_lambda': 0.2178564181359743}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,857] Trial 130 finished with value: 0.0037017431497372777 and parameters: {'learning_rate': 0.20004565257828533, 'num_leaves': 100, 'max_depth': 14, 'min_child_samples': 34, 'subsample': 0.9998557656490464, 'colsample_bytree': 0.961695506411462, 'reg_alpha': 0.06539319861641843, 'reg_lambda': 0.20957014453782402}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,923] Trial 131 finished with value: 0.003516387522089846 and parameters: {'learning_rate': 0.20905761586383273, 'num_leaves': 103, 'max_depth': 15, 'min_child_samples': 32, 'subsample': 0.7981593453037368, 'colsample_bytree': 0.9781458191008302, 'reg_alpha': 0.024970873859056344, 'reg_lambda': 0.13116795460950625}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:49,983] Trial 132 finished with value: 0.0035380988547060797 and parameters: {'learning_rate': 0.20949414199236446, 'num_leaves': 100, 'max_depth': 15, 'min_child_samples': 32, 'subsample': 0.804685213297589, 'colsample_bytree': 0.9767392965096302, 'reg_alpha': 0.031097253155451005, 'reg_lambda': 0.22583823385136037}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,062] Trial 133 finished with value: 0.003633508030093131 and parameters: {'learning_rate': 0.20733641051541943, 'num_leaves': 101, 'max_depth': 15, 'min_child_samples': 27, 'subsample': 0.7751802789818378, 'colsample_bytree': 0.9792565893541775, 'reg_alpha': 0.0001418586945386019, 'reg_lambda': 0.239476531942481}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,097] Trial 134 finished with value: 0.004506264215384588 and parameters: {'learning_rate': 0.21321735631685956, 'num_leaves': 100, 'max_depth': 14, 'min_child_samples': 30, 'subsample': 0.820029759587759, 'colsample_bytree': 0.9918898235452234, 'reg_alpha': 0.46237502406390607, 'reg_lambda': 0.2593377507563829}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,172] Trial 135 finished with value: 0.003579548151839542 and parameters: {'learning_rate': 0.210261033293301, 'num_leaves': 101, 'max_depth': 15, 'min_child_samples': 32, 'subsample': 0.8065793986341433, 'colsample_bytree': 0.9996285012379716, 'reg_alpha': 0.01907313989790392, 'reg_lambda': 0.14832391571547127}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,222] Trial 136 finished with value: 0.0036368974986439495 and parameters: {'learning_rate': 0.20499960014269794, 'num_leaves': 102, 'max_depth': 15, 'min_child_samples': 32, 'subsample': 0.7675988731379197, 'colsample_bytree': 0.9726788209026205, 'reg_alpha': 0.05096874502733832, 'reg_lambda': 0.22276568417446174}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,288] Trial 137 finished with value: 0.0035514487338159746 and parameters: {'learning_rate': 0.20300768816792197, 'num_leaves': 140, 'max_depth': 15, 'min_child_samples': 30, 'subsample': 0.7788218669235513, 'colsample_bytree': 0.9851946549137663, 'reg_alpha': 0.026753061815968843, 'reg_lambda': 0.12317870623028712}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,329] Trial 138 finished with value: 0.003791408158888445 and parameters: {'learning_rate': 0.2026030578078458, 'num_leaves': 141, 'max_depth': 15, 'min_child_samples': 30, 'subsample': 0.7788665458902498, 'colsample_bytree': 0.606885302240324, 'reg_alpha': 0.10380597975161143, 'reg_lambda': 0.16443042405303426}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,403] Trial 139 finished with value: 0.0035554379198375866 and parameters: {'learning_rate': 0.21728903489108453, 'num_leaves': 100, 'max_depth': 14, 'min_child_samples': 28, 'subsample': 0.7353032572924663, 'colsample_bytree': 0.5297680522399252, 'reg_alpha': 0.019455219429042152, 'reg_lambda': 0.19406024631276955}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,449] Trial 140 finished with value: 0.003682911122889768 and parameters: {'learning_rate': 0.209612911611918, 'num_leaves': 147, 'max_depth': 15, 'min_child_samples': 31, 'subsample': 0.7561704334529411, 'colsample_bytree': 0.986275426056687, 'reg_alpha': 0.06707361790118202, 'reg_lambda': 0.1339854445132841}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,524] Trial 141 finished with value: 0.003611788445581085 and parameters: {'learning_rate': 0.2167925706824165, 'num_leaves': 100, 'max_depth': 13, 'min_child_samples': 28, 'subsample': 0.7362371805604885, 'colsample_bytree': 0.9804460331014332, 'reg_alpha': 0.01969909609062641, 'reg_lambda': 0.22294999850549702}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,579] Trial 142 finished with value: 0.00354880513012857 and parameters: {'learning_rate': 0.20318707154478197, 'num_leaves': 102, 'max_depth': 14, 'min_child_samples': 33, 'subsample': 0.721006961674598, 'colsample_bytree': 0.5104698748470493, 'reg_alpha': 0.03970283045951525, 'reg_lambda': 0.18316512229038057}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,632] Trial 143 finished with value: 0.003667570033717017 and parameters: {'learning_rate': 0.20064831075142753, 'num_leaves': 102, 'max_depth': 14, 'min_child_samples': 33, 'subsample': 0.6936963037853743, 'colsample_bytree': 0.5366928568963371, 'reg_alpha': 0.048872251248250564, 'reg_lambda': 0.18883280138019357}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,702] Trial 144 finished with value: 0.0035248244875817148 and parameters: {'learning_rate': 0.2052112051428496, 'num_leaves': 104, 'max_depth': 13, 'min_child_samples': 34, 'subsample': 0.719698284648008, 'colsample_bytree': 0.6534372696503333, 'reg_alpha': 0.0005469358801470786, 'reg_lambda': 0.10902072165976978}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,758] Trial 145 finished with value: 0.003545594104955753 and parameters: {'learning_rate': 0.2121754449790047, 'num_leaves': 105, 'max_depth': 14, 'min_child_samples': 34, 'subsample': 0.7200552536255512, 'colsample_bytree': 0.6499379575794622, 'reg_alpha': 0.03773470118935826, 'reg_lambda': 0.15829339167426887}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,829] Trial 146 finished with value: 0.0035378098396315286 and parameters: {'learning_rate': 0.21203877492718148, 'num_leaves': 104, 'max_depth': 13, 'min_child_samples': 30, 'subsample': 0.7187807624780472, 'colsample_bytree': 0.6596906848998618, 'reg_alpha': 0.0002412647603248011, 'reg_lambda': 0.16024433731881854}. Best is trial 102 with value: 0.0035137842343261.
[I 2025-05-06 17:33:50,900] Trial 147 finished with value: 0.0034973567956182814 and parameters: {'learning_rate': 0.2129239993572639, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 35, 'subsample': 0.717784572342485, 'colsample_bytree': 0.6714307496279379, 'reg_alpha': 0.001029417784470129, 'reg_lambda': 0.16436734345374707}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:50,972] Trial 148 finished with value: 0.0035261408924001803 and parameters: {'learning_rate': 0.21363991853994044, 'num_leaves': 105, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.718573184849355, 'colsample_bytree': 0.6537227984218668, 'reg_alpha': 0.0005643430212384937, 'reg_lambda': 0.23879052679497614}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,050] Trial 149 finished with value: 0.003509200782626041 and parameters: {'learning_rate': 0.21331964541671442, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7176884735566642, 'colsample_bytree': 0.6532407197515326, 'reg_alpha': 0.006109519105237833, 'reg_lambda': 0.26951811083748456}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,127] Trial 150 finished with value: 0.0035332200295056077 and parameters: {'learning_rate': 0.21425167663341999, 'num_leaves': 108, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.7061171639870052, 'colsample_bytree': 0.6751329432645053, 'reg_alpha': 0.0034765228842553765, 'reg_lambda': 0.2788642700665949}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,205] Trial 151 finished with value: 0.0035346765592319915 and parameters: {'learning_rate': 0.214183400293071, 'num_leaves': 108, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.7065591724712068, 'colsample_bytree': 0.6504106031163598, 'reg_alpha': 0.005215087136162668, 'reg_lambda': 0.31819870045453}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,280] Trial 152 finished with value: 0.0035358252176921315 and parameters: {'learning_rate': 0.2133733812854833, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7138519611858762, 'colsample_bytree': 0.6500950727078756, 'reg_alpha': 0.002809051321652635, 'reg_lambda': 0.3346216685464627}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,350] Trial 153 finished with value: 0.003526922899485343 and parameters: {'learning_rate': 0.2152720210912129, 'num_leaves': 108, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7109859962780957, 'colsample_bytree': 0.6499466501018994, 'reg_alpha': 0.000379910181116078, 'reg_lambda': 0.3298577431402989}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,424] Trial 154 finished with value: 0.0035164118870234136 and parameters: {'learning_rate': 0.22019336780016438, 'num_leaves': 108, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7052708356586318, 'colsample_bytree': 0.664527733381687, 'reg_alpha': 0.0026834514760270857, 'reg_lambda': 0.32647297922897306}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,501] Trial 155 finished with value: 0.0035624767846663286 and parameters: {'learning_rate': 0.21498922011881413, 'num_leaves': 109, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7071341839770819, 'colsample_bytree': 0.6811345144283596, 'reg_alpha': 0.004079220672499023, 'reg_lambda': 0.3067502329536196}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,579] Trial 156 finished with value: 0.003520904856507445 and parameters: {'learning_rate': 0.22112039427126368, 'num_leaves': 112, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.6981510028154857, 'colsample_bytree': 0.6530332114896471, 'reg_alpha': 0.0032950963570932616, 'reg_lambda': 0.33578058207649447}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,651] Trial 157 finished with value: 0.003582562508403011 and parameters: {'learning_rate': 0.22074344301366572, 'num_leaves': 111, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.6957507909793644, 'colsample_bytree': 0.6594381878377957, 'reg_alpha': 0.0004600054797719716, 'reg_lambda': 0.3493113414528188}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,723] Trial 158 finished with value: 0.0035337312809181807 and parameters: {'learning_rate': 0.22614565277275245, 'num_leaves': 107, 'max_depth': 12, 'min_child_samples': 30, 'subsample': 0.6879966878453508, 'colsample_bytree': 0.6291411121787913, 'reg_alpha': 0.0018941458862218943, 'reg_lambda': 0.3777819527382612}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,797] Trial 159 finished with value: 0.003617270868116 and parameters: {'learning_rate': 0.22699564941671432, 'num_leaves': 108, 'max_depth': 12, 'min_child_samples': 28, 'subsample': 0.6636611706695911, 'colsample_bytree': 0.6263534552472964, 'reg_alpha': 0.0012321548642786776, 'reg_lambda': 0.372882664086172}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,873] Trial 160 finished with value: 0.00361772504305895 and parameters: {'learning_rate': 0.22097377592149392, 'num_leaves': 107, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.6823071701930902, 'colsample_bytree': 0.6810938110573594, 'reg_alpha': 0.0036601080092368114, 'reg_lambda': 0.28270274541723356}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,944] Trial 161 finished with value: 0.0035734484900285554 and parameters: {'learning_rate': 0.21082788448736817, 'num_leaves': 108, 'max_depth': 12, 'min_child_samples': 30, 'subsample': 0.7117541744779323, 'colsample_bytree': 0.6434090564836336, 'reg_alpha': 0.0011536673345008495, 'reg_lambda': 0.32009145972406544}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:51,991] Trial 162 finished with value: 0.00362879537883621 and parameters: {'learning_rate': 0.21633748942855152, 'num_leaves': 110, 'max_depth': 12, 'min_child_samples': 32, 'subsample': 0.7015619088347242, 'colsample_bytree': 0.6698359359292697, 'reg_alpha': 0.059697691189171176, 'reg_lambda': 0.32935305495202155}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:52,064] Trial 163 finished with value: 0.0035291939311292955 and parameters: {'learning_rate': 0.22439488629649432, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.6720448946979726, 'colsample_bytree': 0.6154367282139667, 'reg_alpha': 0.0003742683002024979, 'reg_lambda': 0.37607616056018206}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:52,098] Trial 164 finished with value: 0.004835556453680196 and parameters: {'learning_rate': 0.22449777991592781, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 26, 'subsample': 0.6703895939206993, 'colsample_bytree': 0.6015498240314715, 'reg_alpha': 0.9751413029257356, 'reg_lambda': 0.37878194685874805}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:52,177] Trial 165 finished with value: 0.003547966427202186 and parameters: {'learning_rate': 0.21919120774573683, 'num_leaves': 108, 'max_depth': 13, 'min_child_samples': 27, 'subsample': 0.6859506793698452, 'colsample_bytree': 0.7057203151960048, 'reg_alpha': 0.0018200857393046374, 'reg_lambda': 0.3417648405486675}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:52,225] Trial 166 finished with value: 0.0036119135670817713 and parameters: {'learning_rate': 0.21422777890470354, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.649224409760772, 'colsample_bytree': 0.6543304872230319, 'reg_alpha': 0.05350048782141742, 'reg_lambda': 0.40451750373625794}. Best is trial 147 with value: 0.0034973567956182814.
[I 2025-05-06 17:33:52,297] Trial 167 finished with value: 0.0034839643753574075 and parameters: {'learning_rate': 0.22397708183717574, 'num_leaves': 111, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.6982625275509843, 'colsample_bytree': 0.6262823194091198, 'reg_alpha': 0.020350627784682274, 'reg_lambda': 0.3092159542687916}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,374] Trial 168 finished with value: 0.003492016330527024 and parameters: {'learning_rate': 0.22514241472444624, 'num_leaves': 112, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.6792228357429628, 'colsample_bytree': 0.6341671850214047, 'reg_alpha': 0.016006613525745915, 'reg_lambda': 0.2762581277543134}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,423] Trial 169 finished with value: 0.0036072443758161147 and parameters: {'learning_rate': 0.2290357101300204, 'num_leaves': 111, 'max_depth': 11, 'min_child_samples': 31, 'subsample': 0.6640300357621238, 'colsample_bytree': 0.6181417027311453, 'reg_alpha': 0.04954902004585645, 'reg_lambda': 0.28577067519476484}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,492] Trial 170 finished with value: 0.0035951590611079214 and parameters: {'learning_rate': 0.22397027884634654, 'num_leaves': 110, 'max_depth': 12, 'min_child_samples': 33, 'subsample': 0.6988010537930714, 'colsample_bytree': 0.6360812442455072, 'reg_alpha': 0.022342887081565763, 'reg_lambda': 0.3054967630700893}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,567] Trial 171 finished with value: 0.003559909374929795 and parameters: {'learning_rate': 0.22284301868500878, 'num_leaves': 112, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.7090575789626347, 'colsample_bytree': 0.62579498063267, 'reg_alpha': 0.01785064319645729, 'reg_lambda': 0.3631450079217836}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,644] Trial 172 finished with value: 0.0035097935472725604 and parameters: {'learning_rate': 0.21880532484141443, 'num_leaves': 114, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.6805439304956831, 'colsample_bytree': 0.6735955086948766, 'reg_alpha': 0.01848431563112847, 'reg_lambda': 0.2678107332039302}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,694] Trial 173 finished with value: 0.0035737006402234207 and parameters: {'learning_rate': 0.22806355196371728, 'num_leaves': 116, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.6725667153275467, 'colsample_bytree': 0.6729454423777931, 'reg_alpha': 0.04603519521670307, 'reg_lambda': 0.26662984443825055}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,772] Trial 174 finished with value: 0.0036029003460958074 and parameters: {'learning_rate': 0.218688411912651, 'num_leaves': 112, 'max_depth': 12, 'min_child_samples': 25, 'subsample': 0.6828686485022194, 'colsample_bytree': 0.6404442025547857, 'reg_alpha': 0.017057669791624708, 'reg_lambda': 0.31542792841161105}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,818] Trial 175 finished with value: 0.0036769705983791087 and parameters: {'learning_rate': 0.2261231563189707, 'num_leaves': 109, 'max_depth': 13, 'min_child_samples': 29, 'subsample': 0.69426116320757, 'colsample_bytree': 0.6109854147622584, 'reg_alpha': 0.07378128430205301, 'reg_lambda': 0.4654455447099092}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,870] Trial 176 finished with value: 0.0035854186677225807 and parameters: {'learning_rate': 0.22164548479569451, 'num_leaves': 113, 'max_depth': 13, 'min_child_samples': 30, 'subsample': 0.6806338699178565, 'colsample_bytree': 0.5883300670027904, 'reg_alpha': 0.04412547149163517, 'reg_lambda': 0.2892446235770849}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,905] Trial 177 finished with value: 0.004743531671978313 and parameters: {'learning_rate': 0.2162982015095905, 'num_leaves': 115, 'max_depth': 13, 'min_child_samples': 31, 'subsample': 0.6892639233385791, 'colsample_bytree': 0.7001756256339294, 'reg_alpha': 0.7801508290298155, 'reg_lambda': 0.2595382714382541}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:52,974] Trial 178 finished with value: 0.0035160754987056033 and parameters: {'learning_rate': 0.23247059420298039, 'num_leaves': 107, 'max_depth': 13, 'min_child_samples': 35, 'subsample': 0.6467620946368522, 'colsample_bytree': 0.6307688694458193, 'reg_alpha': 0.020741857026163168, 'reg_lambda': 0.2445736742522995}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:53,019] Trial 179 finished with value: 0.0036941847616566905 and parameters: {'learning_rate': 0.23210042502676362, 'num_leaves': 107, 'max_depth': 12, 'min_child_samples': 35, 'subsample': 0.6469231194079266, 'colsample_bytree': 0.6326803664389791, 'reg_alpha': 0.06828569412799512, 'reg_lambda': 0.24061466110340932}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:53,056] Trial 180 finished with value: 0.004278483284442407 and parameters: {'learning_rate': 0.23099238972806718, 'num_leaves': 114, 'max_depth': 13, 'min_child_samples': 33, 'subsample': 0.6663822721088382, 'colsample_bytree': 0.6864023945532378, 'reg_alpha': 0.3133314510364732, 'reg_lambda': 0.27954512213685595}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:53,120] Trial 181 finished with value: 0.003512339926544487 and parameters: {'learning_rate': 0.22519806405725132, 'num_leaves': 109, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7003172011502933, 'colsample_bytree': 0.6668801105989376, 'reg_alpha': 0.02536875076413572, 'reg_lambda': 0.35783761792971386}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:53,190] Trial 182 finished with value: 0.0035561968348443154 and parameters: {'learning_rate': 0.22665150134940631, 'num_leaves': 111, 'max_depth': 13, 'min_child_samples': 28, 'subsample': 0.6977882433449483, 'colsample_bytree': 0.6706243630012428, 'reg_alpha': 0.023479554377876685, 'reg_lambda': 0.40721468304563674}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:53,244] Trial 183 finished with value: 0.0036201496532961273 and parameters: {'learning_rate': 0.22320274463935574, 'num_leaves': 109, 'max_depth': 12, 'min_child_samples': 34, 'subsample': 0.635636867139061, 'colsample_bytree': 0.6161739891701594, 'reg_alpha': 0.04141972036266911, 'reg_lambda': 0.3496773290771339}. Best is trial 167 with value: 0.0034839643753574075.
[I 2025-05-06 17:33:53,318] Trial 184 finished with value: 0.003481992470317019 and parameters: {'learning_rate': 0.21869286699934634, 'num_leaves': 107, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.725619522811487, 'colsample_bytree': 0.6645067529008442, 'reg_alpha': 0.019088215737992457, 'reg_lambda': 0.2944512434504364}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,384] Trial 185 finished with value: 0.0035553046651009613 and parameters: {'learning_rate': 0.2202478066590226, 'num_leaves': 110, 'max_depth': 13, 'min_child_samples': 33, 'subsample': 0.7221386160019023, 'colsample_bytree': 0.6598209614277483, 'reg_alpha': 0.022954394752346646, 'reg_lambda': 0.3008738491534062}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,433] Trial 186 finished with value: 0.003676368969922512 and parameters: {'learning_rate': 0.20729174069100295, 'num_leaves': 105, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7252813376125515, 'colsample_bytree': 0.6764201662307076, 'reg_alpha': 0.061603527755463044, 'reg_lambda': 0.28217852717187736}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,489] Trial 187 finished with value: 0.0036131533668762876 and parameters: {'learning_rate': 0.21780010431760988, 'num_leaves': 113, 'max_depth': 13, 'min_child_samples': 33, 'subsample': 0.6574346973504069, 'colsample_bytree': 0.6441228616699437, 'reg_alpha': 0.04157333163646999, 'reg_lambda': 0.2500397990030954}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,534] Trial 188 finished with value: 0.003746855499762854 and parameters: {'learning_rate': 0.21018948669515947, 'num_leaves': 109, 'max_depth': 13, 'min_child_samples': 35, 'subsample': 0.6251710006753208, 'colsample_bytree': 0.6931739245313803, 'reg_alpha': 0.08472551502228379, 'reg_lambda': 0.2658311702825834}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,603] Trial 189 finished with value: 0.0034991222191972132 and parameters: {'learning_rate': 0.2328856919578342, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.706758251806222, 'colsample_bytree': 0.663613636940295, 'reg_alpha': 0.022934004752349375, 'reg_lambda': 0.2999745167863379}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,671] Trial 190 finished with value: 0.0035041073588787343 and parameters: {'learning_rate': 0.2326314145085068, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 34, 'subsample': 0.6759529337227334, 'colsample_bytree': 0.5953164995658691, 'reg_alpha': 0.02377935832467076, 'reg_lambda': 0.3262196657069309}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,737] Trial 191 finished with value: 0.0035843215273074535 and parameters: {'learning_rate': 0.23290937121770058, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 34, 'subsample': 0.6741002689511072, 'colsample_bytree': 0.5994689283273942, 'reg_alpha': 0.024368090220085053, 'reg_lambda': 0.3289479767092439}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,788] Trial 192 finished with value: 0.003596464769692819 and parameters: {'learning_rate': 0.2341274899126493, 'num_leaves': 107, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7122897794180665, 'colsample_bytree': 0.6652815678705744, 'reg_alpha': 0.04453923049806248, 'reg_lambda': 0.3046430663360633}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,824] Trial 193 finished with value: 0.0045497896127935965 and parameters: {'learning_rate': 0.22902774367439666, 'num_leaves': 105, 'max_depth': 13, 'min_child_samples': 34, 'subsample': 0.7276073840758823, 'colsample_bytree': 0.5934340295056159, 'reg_alpha': 0.5496462679037029, 'reg_lambda': 0.3547544100568989}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,886] Trial 194 finished with value: 0.003570599269540243 and parameters: {'learning_rate': 0.2217809703793661, 'num_leaves': 112, 'max_depth': 14, 'min_child_samples': 33, 'subsample': 0.6979563904709998, 'colsample_bytree': 0.5761608888936572, 'reg_alpha': 0.025587823339889456, 'reg_lambda': 0.32467645327443145}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,934] Trial 195 finished with value: 0.003670324777342196 and parameters: {'learning_rate': 0.23131643385205336, 'num_leaves': 106, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7170356415073529, 'colsample_bytree': 0.6393279982590134, 'reg_alpha': 0.057054027262476686, 'reg_lambda': 0.29786488536137656}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:53,970] Trial 196 finished with value: 0.004626023978439082 and parameters: {'learning_rate': 0.236471719585566, 'num_leaves': 104, 'max_depth': 13, 'min_child_samples': 34, 'subsample': 0.6774459111434996, 'colsample_bytree': 0.6562491556020729, 'reg_alpha': 0.6170613547136492, 'reg_lambda': 0.33701539894620997}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:54,042] Trial 197 finished with value: 0.003574702492586234 and parameters: {'learning_rate': 0.22401998049506, 'num_leaves': 107, 'max_depth': 14, 'min_child_samples': 35, 'subsample': 0.6874130740688367, 'colsample_bytree': 0.6232071210387813, 'reg_alpha': 0.019724025777311215, 'reg_lambda': 0.254431273834761}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:54,097] Trial 198 finished with value: 0.003557946600605334 and parameters: {'learning_rate': 0.22725748836287707, 'num_leaves': 120, 'max_depth': 13, 'min_child_samples': 30, 'subsample': 0.6564363549407087, 'colsample_bytree': 0.6648594153218911, 'reg_alpha': 0.037049118892216924, 'reg_lambda': 0.23872525636192574}. Best is trial 184 with value: 0.003481992470317019.
[I 2025-05-06 17:33:54,170] Trial 199 finished with value: 0.0035425927262503006 and parameters: {'learning_rate': 0.2193574042158033, 'num_leaves': 105, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.7038156495094258, 'colsample_bytree': 0.557725804545527, 'reg_alpha': 0.019614654166384797, 'reg_lambda': 0.365330630445853}. Best is trial 184 with value: 0.003481992470317019.
Best RMSE on validation set:  0.003481992470317019
Best hyperparameters:  {'learning_rate': 0.21869286699934634, 'num_leaves': 107, 'max_depth': 13, 'min_child_samples': 32, 'subsample': 0.725619522811487, 'colsample_bytree': 0.6645067529008442, 'reg_alpha': 0.019088215737992457, 'reg_lambda': 0.2944512434504364}
Hide code cell source
best_params = dict({'seed': 42}, **study.best_params)
best_model = lgb.train(best_params, 
                      lgb.Dataset(X_train, y_train),
                      valid_sets=[lgb.Dataset(X_valid, y_valid)])

preds = best_model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, preds))

print(f'RMSE: {rmse}')
print(f'RMSE-% of truth: {rmse / np.mean(y_test) * 100}')
print(f'RMSE-% of max-min truth: {rmse / (np.max(y_test) - np.min(y_test)) * 100}')
RMSE: 0.003634991886417916
RMSE-% of truth: -265.82430111899333
RMSE-% of max-min truth: 7.489603416599541
Hide code cell source
plt.figure(figsize=(6,6))
plt.scatter(y_test, preds, alpha=0.3)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')
plt.yscale('log')
plt.xscale('log')
plt.xlabel('Actual Migration (log)')
plt.ylabel('Predicted Migration (log)')
plt.title('Actual vs. Predicted Migration')
plt.show()
../_images/ff12db336f3e3b400ed9680455420d1cfa64995e86a566ececd8df9e4034d738.png
Hide code cell source
from plotly.io import show
fig = optuna.visualization.plot_slice(study)
show(fig)
Hide code cell source
feature_names = df.drop(columns=["year", "net_migration", "municipality"]).columns
importance = pd.Series(best_model.feature_importance(importance_type='gain'), 
                       index=feature_names)

importance
Average_age_both_sexes_arr                                            0.009155
Demographic_dependency_ratio_arr                                      0.004320
Economic_dependency_ratio_arr                                         0.055737
Land_area_km__arr                                                     0.003809
Population_density_arr                                                0.001676
Share_of_Finnish_speakers__arr                                        0.006178
Share_of_foreign_citizens__arr                                        0.002541
Share_of_persons_aged_under_15__arr                                   0.009646
Share_of_persons_belonging_to_other_religious_groups__arr             0.001299
Share_of_persons_belonging_to_the_Evangelical_Lutheran_Church__arr    0.004024
Share_of_persons_born_in_the_area_of_residence__arr                   0.058206
Share_of_persons_in_inner_urban_area__arr                             0.002913
Share_of_persons_in_local_centres_in_rural_areas__arr                 0.000699
Share_of_persons_in_outer_urban_area__arr                             0.004312
Share_of_persons_in_peri_urban_area__arr                              0.003448
Share_of_persons_in_rural_areas_close_to_urban_areas__arr             0.007650
Share_of_persons_in_rural_areas__arr                                  0.003937
Share_of_persons_in_rural_heartland_areas__arr                        0.001127
Share_of_persons_in_sparsely_populated_rural_areas__arr               0.002402
Share_of_persons_living_in_the_area_of_birth__arr                     0.010097
dtype: float64

SHAP on train#

Hide code cell source
explainer = shap.TreeExplainer(best_model)
shap_values = explainer(X_train)
Hide code cell source
# shap_values.feature_names = feature_names
# fig, ax = plt.subplots(1, 1, figsize=(40, 12))
shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False)
plt.savefig("images/lgb-shap-train-importance.png")
plt.show()
../_images/0030bc80a3ac617651db0804abb8b22ba0072ac0411b9e0a55ca71abe6fa16e7.png

Color by target municipality#

Hide code cell source
largest = set(df.groupby(["municipality"])["net_migration"].sum().sort_values()[-10:].keys())
print(largest)
{'Lieto', 'Kaarina', 'Naantali', 'Nurmijärvi', 'Lempäälä', 'Mäntsälä', 'Pirkkala', 'Kirkkonummi', 'Tuusula', 'Sipoo'}
Hide code cell source
df.groupby(["municipality"])["net_migration"].sum().sort_values()[-10:]
municipality
Mäntsälä       0.215930
Tuusula        0.231157
Kirkkonummi    0.231388
Naantali       0.239874
Lieto          0.263044
Kaarina        0.268657
Nurmijärvi     0.275619
Lempäälä       0.334540
Pirkkala       0.347997
Sipoo          0.415789
Name: net_migration, dtype: float64
Hide code cell source
palette = sns.color_palette("husl", n_colors=len(largest))
palette.append([0.8, 0.8, 0.8, 1.0])
Hide code cell source
_idx = X_train.index
Hide code cell source
fig = plt.figure(figsize=(12, 6))
gs = fig.add_gridspec(1, 2, width_ratios=[6, 0.5], wspace=0.3)

# Create a 3x2 GridSpec inside the left subplot area
left_gs = GridSpecFromSubplotSpec(3, 2, subplot_spec=gs[0], hspace=0.4, wspace=0.3)

axes = []
for i in range(6):
    row, col = divmod(i, 2)
    ax = fig.add_subplot(left_gs[row, col])
    axes.append(ax)

# Data setup

# Get feature importance based on mean absolute SHAP values
feature_importance = np.abs(shap_values.values).mean(axis=0)
top_features = np.argsort(feature_importance)[-6:][::-1]  # Indices of 6 most important features
orig_data = shap_values.data


# Colors 
palette = sns.color_palette("husl", n_colors=len(largest))
palette.append([0.8, 0.8, 0.8, 1.0])
cmap = ListedColormap(palette)
unique_cats = df['municipality'].unique()
# color_indices = pd.factorize(largest)[0]
idx_map = {v:i for (i, v) in enumerate(list(largest))}

color_indices = []
for a in df.loc[df.index.isin(_idx), 'municipality']:
    if a in largest:
        color_indices.append(idx_map[a])
    else:
        color_indices.append(len(largest))

colors = cmap(color_indices)

# Plot scatter plots on these axes
for i, feature_index in enumerate(top_features):
    ax = axes[i]
    _x = orig_data[:, feature_index]
    _y = shap_values[:, feature_index].values
    ax.scatter(_x, _y, alpha=0.5, s=12, zorder=3, color=colors)
    ax.set_xlabel(f'{feature_names[feature_index]}')
    ax.set_ylabel('')

# Shared y-label for SHAP values
fig.text(0.04, 0.5, 'SHAP Value', va='center', rotation='vertical', fontsize=14)

# Right subplot for legend
ax_legend = fig.add_subplot(gs[1])
idx_map_rev = {i: m for m, i in idx_map.items()}

for i, color in enumerate(palette):
    try:
        label = idx_map_rev[i]
    except KeyError:
        label = "other"
    ax_legend.barh(i, 0.5, color=color)
    ax_legend.text(0.6, i, label, va='center', size=8)

ax_legend.set_title("Category Legend")
ax_legend.axis('off')

plt.tight_layout(rect=[0.05, 0, 1, 1])
plt.savefig("images/lgb-shap-train-panel.png")
plt.show()
/tmp/ipykernel_213614/2002590861.py:65: UserWarning:

This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.
../_images/7cc2b9f3bb4929f5db264c07de7804d3ce31cfa0ecc6ad9a905dd46257e0e39c.png